      SUBROUTINE USSBEG 
*-----------------------------------------------------------------------
*   
*--- user start of filtered statement (treat names here)
*   
*-----------------------------------------------------------------------
      include 'PARAM.h' 
      include 'ALCAZA.h' 
      include 'CLASS.h' 
      include 'CURSTA.h' 
      include 'FLWORK.h' 
      include 'KEYCOM.h' 
      include 'TYPDEF.h' 
      include 'JOBSUM.h' 
      include 'STATE.h' 
      include 'FLAGS.h' 
      include 'USCOMN.h' 
      include 'USSTMT.h' 
      include 'USIGNO.h' 
      include 'USLIST.h' 
      include 'USUNIT.h' 
      include 'USARGS.h' 
      include 'USINFN.h' 
      include 'USLTYD.h' 
      include 'CHECKS.h' 
      CHARACTER*(MXNMCH) CNAM   
      CHARACTER*25 C25NAM   
      LOGICAL FOK   
      DATA ICALL /0/
      IF(UNFLP) RETURN  
      IF(ICALL.EQ.0) THEN   
         ISGLOB = 0 
         ICALL = 1  
      ENDIF 
C Determine whether this module is to be processed  
      IF(.NOT.RPROCS) RETURN
      NST = NFLINE(NSTREF)  
      NFI = NLLINE(NSTREF)  
      ICL1 = ICURCL(1)  
      ICL2 = ICURCL(2)  
C ICL1 is class of first part of statement  
C ICL2 is class of second part if ICL1 is an IF statement   
      IF(LMODUS(ICL1)) THEN 
C Module start  
C   
         IF(NIGNOS.NE.0) THEN   
            CNAM = SNAMES(ISNAME+1) 
            ILEN = INDEX(CNAM,' ')-1
            IF(ILEN.EQ.-1) ILEN = MXNMCH
            DO 10 IGN=1,NIGNOS  
               IF(LIGNOS(IGN).NE.ILEN)                           GOTO 10
               IF(CIGNOS(IGN).EQ.CNAM) THEN 
                  NFAULT = 0
                  RPROCS = .FALSE.  
                  RETURN
               ENDIF
   10       CONTINUE
         ENDIF  
         WRITE(MZUNIT,550) (SIMA(II)(7:),II=NST,NFI)
         ISTMT = 0  
         NCOMN = 0  
         NCOMT = 0  
         IFUNC = 0  
C Set FUNCTION flag 
         IF(LFUNCT(ICL1)) IFUNC = 1 
         ICLOLD = ICL1  
         NFIOLD = NFI   
         IF(LCHECK(11).AND.NSTREF.NE.1) WRITE(MZUNIT,560)   
C Make check for module names the same as intrinsic functions   
         CNAM = SNAMES(ISNAME+1)
         ILEN = INDEX(CNAM,' ')-1   
         IF(LCHECK(12)) THEN
            DO 20 I=1,LIF   
               IF(ILEN.NE.INDEX(CINFUN(I),' ')-1)                GOTO 20
               IF(CNAM(:ILEN).NE.CINFUN(I)(:ILEN))               GOTO 20
               WRITE(MZUNIT,570) CNAM,CNAM  
               NFAULT = NFAULT + 1  
                                                                 GOTO 30
   20       CONTINUE
   30       CONTINUE
         ENDIF  
C First statement in input should be module declaration 
      ELSE IF(LCHECK(13).AND.ISGLOB.EQ.0.AND.NFIOLD.EQ.0) THEN  
         WRITE(MZUNIT,500)  
         NFAULT = NFAULT + 1
      ENDIF 
C Make check for comment lines after start of routine   
      ISTMT=ISTMT+1 
      IF(LCHECK(14).AND.ISTMT.EQ.2) THEN
         IF(NST-NFIOLD.LT.3) THEN   
            WRITE(MZUNIT,580)   
            NFAULT = NFAULT + 1 
         ENDIF  
      ENDIF 
      IF(NST-NFIOLD.GT.1) THEN  
         IF(USFULL) WRITE(MZUNIT,510) (II+ISGLOB,SIMA(II), II=NFIOLD+1, 
     +   NST-1) 
C Check comment lines   
         ICMSET = 0 
         DO 40 I=NFIOLD+1,NST-1 
            IF(NLTYPE(I).EQ.0) THEN 
C Store comment line if TREE option requested   
               IF(ACTION(29).AND.SIMA(I)(1:2).EQ.'C!') THEN 
                  IF(ICMSET.EQ.0) CMMNT = SIMA(I)(3:LARC+2) 
                  ICMSET = 1
               ENDIF
C comment lines should start with C 
               IF(LCHECK(15).AND.SIMA(I)(1:1).NE.'C') THEN  
                  IF(.NOT.USFULL) WRITE(MZUNIT,510) I+ISGLOB,SIMA(I)
                  WRITE(MZUNIT,590) 
                  NFAULT = NFAULT + 1   
               ENDIF
            ENDIF   
   40    CONTINUE   
      ENDIF 
      NFIOLD = NFI  
C Write all statements to MZUNIT if USFULL set  
      IF(USFULL) THEN   
        WRITE(MZUNIT,510) (II+ISGLOB,SIMA(II),II=NST,NFI)   
      ENDIF 
C   
C Check for comment lines in between continuations  
      IF(LCHECK(16).AND.NFI-NST.GT.0) THEN  
         DO 50 IST=NST+1,NFI-1  
            IF(SIMA(IST)(:5).NE.'      ') THEN  
               IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II 
     +         =NST,NFI)
               WRITE(MZUNIT,610)
               NFAULT = NFAULT + 1  
                                                                 GOTO 60
            ENDIF   
   50    CONTINUE   
   60    CONTINUE   
      ENDIF 
C Check for standard variable types 
      IF(LCHECK(17).AND.LNSVT(ICL1)) THEN   
         IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II=NST,  
     +   NFI)   
         WRITE(MZUNIT,520)  
         NFAULT = NFAULT + 1
      ENDIF 
C Collect list of COMMON names used in this routine 
      IF(LCOMMN(ICL1)) THEN 
C First check that only one COMMON name per COMMON statement
         IPOS1 = INDEX(SSTA(:NCHST),'/')
         IF(IPOS1.EQ.0) GOTO 70 
         IPOS2 = INDEX(SSTA(IPOS1+1:NCHST),'/') 
         IF(IPOS2.EQ.0) GOTO 70 
         IPOS3 = INDEX(SSTA(IPOS1+IPOS2+1:NCHST),'/')   
         IF(IPOS3.NE.0) THEN
            IF(.NOT.USFULL) WRITE(MZUNIT,850)   
     &                   (II+ISGLOB,SIMA(II),II =NST,NFI)   
            WRITE(MZUNIT,620)   
            NFAULT = NFAULT + 1 
         ENDIF  
   70    CONTINUE   
         NCOMT = NCOMT + 1  
         IF(NCOMT.GT.MCOMT) THEN
            NCOMT = NCOMT-1 
            WRITE(MZUNIT,630)   
                                                                GOTO 110
         ENDIF  
C Take account of blank COMMON  
         IF(INDEX(SSTA(:NCHST),'//').NE.0.OR.   
     &      INDEX(SSTA(:NCHST),'/ /').NE.0) THEN
            SCTITL(NCOMT) = 'BLANKCOM'  
            IST = 1 
         ELSE   
            SCTITL(NCOMT) = SNAMES(ISNAME+1)
            IST = 2 
         ENDIF  
         ICTITL(NCOMT) = NCOMN + 1  
         DO 100 ISN=IST,NSNAME  
C We ensure that the list of names for this COMMON block does not   
C include parameters. This is done by checking for no hanging parentheses.  
            IBEG = NSSTRT(ISN)  
            ICOUNB = 0  
            DO 95 ICH=1,IBEG-1  
               IF(SSTA(ICH:ICH).EQ.'(') THEN
                 ICOUNB=ICOUNB+1
               ELSE IF(SSTA(ICH:ICH).EQ.')') THEN   
                 ICOUNB=ICOUNB-1
               ENDIF
   95       CONTINUE
            IF(ICOUNB.NE.0) GOTO 100
            NCOMN = NCOMN + 1   
            IF(NCOMN.GT.MCOMN) THEN 
               NCOMN = NCOMN-1  
               WRITE(MZUNIT,640)
                                                                GOTO 110
            ENDIF   
            SCNAME(NCOMN) = SNAMES(ISNAME+ISN)  
            ICNAME(NCOMN) = NCOMT   
  100    CONTINUE   
  110    CONTINUE   
      ENDIF 
C Check for statements which dimension outside COMMON   
      IF(LCHECK(19).AND.LDIMEN(ICL1)) THEN  
         IOVER = 0  
         DO 150 I=1,NSNAME  
            CNAM = SNAMES(I+ISNAME) 
            ILEN = INDEX(CNAM,' ')-1
            IF(ILEN.EQ.-1)                                      GOTO 150
            MATCH = 0   
            DO 130 IC=1,NCOMN   
               ILEN1 = INDEX(SCNAME(IC),' ')-1  
               IF(ILEN1.NE.ILEN)                                GOTO 130
               IF(CNAM.NE.SCNAME(IC))                           GOTO 130
               MATCH = 1
C Now have found a declaration of a name in COMMON  
C Search for position of name in the statement  
               INDE = NSEND(I)+1
C Search for ( or , and ignore blanks   
               DO 120 IPL = INDE,NCHST  
                  IF(SSTA(IPL:IPL).EQ.' ')                      GOTO 120
                  IF(SSTA(IPL:IPL).EQ.',')                      GOTO 140
                  IF(SSTA(IPL:IPL).EQ.'(') THEN 
C array declaration 
                     IF(IOVER.EQ.0.AND..NOT.USFULL) WRITE(MZUNIT,850)   
     +               (II+ ISGLOB, SIMA(II),II=NST,NFI)  
                     WRITE(MZUNIT,650) CNAM 
                     NFAULT = NFAULT + 1
                     IOVER = 1  
                                                                GOTO 150
                  ELSE  
                                                                GOTO 140
                  ENDIF 
  120          CONTINUE 
  130       CONTINUE
  140       CONTINUE
  150    CONTINUE   
      ENDIF 
C Check for embedded blanks in names
      IF(LCHECK(20)) THEN   
         IDONE = 0  
         DO 160 I=1,NSNAME  
            CNAM=SNAMES(I+ISNAME)   
            ILEN1 = INDEX(CNAM,' ')-1   
            IF(ILEN1.EQ.-1) ILEN1 = MXNMCH  
            IF(ILEN1.GT.6)                                      GOTO 160
            NS = NSSTRT(I)  
            NE = NSEND(I)   
            ILEN2 = NE-NS+1 
            IF(ILEN2.NE.ILEN1) THEN 
               IF(IDONE.EQ.0.AND..NOT.USFULL) WRITE(MZUNIT,850) (II 
     +         +ISGLOB, SIMA(II),II=NST, NFI)   
               WRITE(MZUNIT,660) CNAM   
               IDONE = 1
               NFAULT = NFAULT + 1  
            ENDIF   
  160    CONTINUE   
      ENDIF 
C Now check for embedded blanks in  syntactic entities  
      NF1 = ISTMDS(3,ICL1)  
      NL1 = ISTMDS(4,ICL1)  
      IF(LIFF(ICL1)) THEN   
         NF2 = ISTMDS(3,ICL2)   
         NL2 = ISTMDS(4,ICL2)   
      ELSE  
         NF2 = 0
      ENDIF 
      IF(LCHECK(21)) THEN   
C DEFSTA returns FOK=.TRUE. if statement ICL1 is to be checked  
         CALL DEFSTA(ICL1,ILEN,C25NAM,FOK)  
         IF(FOK) THEN   
            INDE = INDEX(SIMA(NST),C25NAM(:ILEN))   
            IF(INDE.EQ.0) THEN  
               IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II 
     +         =NST, NFI)   
               WRITE(MZUNIT,670) C25NAM 
               NFAULT = NFAULT + 1  
            ELSE
               IF(SIMA(NST)(INDE+ILEN:INDE+ILEN).NE.' ') THEN   
                  IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),
     +            II =NST,NFI)  
                  WRITE(MZUNIT,680) C25NAM  
                  NFAULT = NFAULT + 1   
               ENDIF
            ENDIF   
         ENDIF  
C Special treatment of GO TO and ELSE IF
         IF(LELSE(ICL1)) THEN   
            INDE = INDEX(SSTA(:NCHST),'ELSE')   
            IF(INDE.EQ.0) THEN  
               IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II), II
     +         =NST,NFI)
               WRITE(MZUNIT,690)
               NFAULT = NFAULT + 1  
            ELSE
               IBL = 0  
               DO 170 ICH=INDE+4,NCHST  
                  IF(SSTA(ICH:ICH).EQ.' ') THEN 
                     IBL=IBL+1  
                                                                GOTO 170
                  ELSE IF(SSTA(ICH:ICH+1).EQ.'IF') THEN 
                     IF(IBL.GT.1) THEN  
                        IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,   
     +                  SIMA(II), II=NST,NFI)   
                        WRITE(MZUNIT,690)   
                                                                GOTO 180
C             ELSE IF(SSTA(ICH+2:ICH+2).NE.' ') THEN
C               IF(.NOT.USFULL) WRITE(MZUNIT,685) (II+ISGLOB,SIMA(II),  
C    &          II=NST,NFI) 
C               WRITE(MZUNIT,610)   
C               GOTO 334
                     ENDIF  
                  ENDIF 
                                                                GOTO 180
  170          CONTINUE 
  180          CONTINUE 
            ENDIF   
         ENDIF  
         IF(LGOTO(ICL1)) THEN   
            INDE = 0
            INDE1 = INDEX(SSTA(:NCHST),'GO TO') 
            IF(INDE1.EQ.0) INDE = INDEX(SSTA(:NCHST),'GOTO')
            IF(INDE.EQ.0.AND.INDE1.EQ.0) THEN   
               IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II 
     +         =NST, NFI)   
               WRITE(MZUNIT,710)
               NFAULT = NFAULT + 1  
            ELSE IF(INDE1.NE.0.AND.INDEX(SSTA(:NCHST),'GO TO ').EQ.0)   
     +         THEN 
               IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II 
     +         =NST, NFI)   
               WRITE(MZUNIT,720)
               NFAULT = NFAULT + 1  
            ELSE IF(INDE.NE.0.AND.INDEX(SSTA(:NCHST),'GOTO ').EQ.0) 
     +         THEN 
               IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II 
     +         =NST, NFI)   
               WRITE(MZUNIT,730)
               NFAULT = NFAULT + 1  
            ENDIF   
         ENDIF  
C End special treatment for ICL1
         IF(NF2.NE.0) THEN  
            CALL DEFSTA(ICL2,ILEN,C25NAM,FOK)   
            IF(FOK) THEN
               DO 190 IJ=NST,NFI
                  INDE = INDEX(SIMA(IJ),C25NAM(:ILEN))  
                  IF(INDE.NE.0) THEN
                     IF(SIMA(IJ)(INDE+ILEN:INDE+ILEN).NE.' ') THEN  
                        IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,   
     +                  SIMA(II),II =NST,NFI)   
                        WRITE(MZUNIT,680) C25NAM
                        NFAULT = NFAULT + 1 
                     ENDIF  
                                                                GOTO 200
                  ENDIF 
  190          CONTINUE 
               IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II 
     +         =NST, NFI)   
               WRITE(MZUNIT,670) C25NAM 
               NFAULT = NFAULT + 1  
  200          CONTINUE 
            ENDIF   
         ENDIF  
C Special treatment of GO TO after IF statement 
         IF(LGOTO(ICL2).AND.NF2.NE.0) THEN  
            DO 210 IJ=NST,NFI   
               INDE = 0 
               INDE1 = INDEX(SIMA(IJ),'GO TO')  
               IF(INDE1.EQ.0) INDE = INDEX(SIMA(IJ),'GOTO') 
               IF(INDE.NE.0) THEN   
                  IF(INDEX(SIMA(IJ),'GOTO ').EQ.0) THEN 
                     IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA  
     +               (II),II =NST,NFI)  
                     WRITE(MZUNIT,740)  
                     NFAULT = NFAULT + 1
                  ENDIF 
                                                                GOTO 220
               ELSE IF(INDE1.NE.0) THEN 
                  IF(INDEX(SIMA(IJ),'GO TO ').EQ.0) THEN
                     IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA  
     +               (II),II =NST,NFI)  
                     WRITE(MZUNIT,750)  
                     NFAULT = NFAULT + 1
                  ENDIF 
                                                                GOTO 220
               ELSE IF(IJ.EQ.NFI) THEN  
                  IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),
     +            II =NST,NFI)  
                  WRITE(MZUNIT,760) 
                  NFAULT = NFAULT + 1   
                                                                GOTO 220
               ENDIF
  210       CONTINUE
  220       CONTINUE
         ENDIF  
      ENDIF 
C End special treatment for ICL2 GOTO   
      IF(LCHECK(22).AND.(LPRINT(ICL1).OR.LPRINT(ICL2))) THEN
C PRINT statement   
         IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II=NST,  
     +   NFI)   
         WRITE(MZUNIT,770)  
         NFAULT = NFAULT + 1
      ELSE IF(LCHECK(23).AND.ICL1.EQ.IEND) THEN 
C END statement 
         IF(SIMA(NST)(:5).NE.'     ') THEN  
            IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II
     +      =NST, NFI)  
            WRITE(MZUNIT,790)   
            NFAULT = NFAULT + 1 
         ENDIF  
      ELSE IF(LWRITE(ICL1).OR.LWRITE(ICL2)) THEN
C WRITE statement   
         IF(LCHECK(24)) THEN
            ILOC = INDEX(SSTA(:NCHST),'WRITE')+5
            ILOC1 = INDEX(SSTA(ILOC:NCHST),'(') 
            IF(ILOC1.EQ.0.OR.ILOC.EQ.0)                         GOTO 240
            ILOC = ILOC1 + ILOC 
            DO 230 IL=ILOC,MXLINE   
               IF(SSTA(IL:IL).EQ.' ')                           GOTO 230
               IF(SSTA(IL:IL).EQ.'*') THEN  
                  IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),
     +            II =NST,NFI)  
                  WRITE(MZUNIT,800) 
                  NFAULT = NFAULT + 1   
               ELSE 
                                                                GOTO 240
               ENDIF
  230       CONTINUE
  240       CONTINUE
         ENDIF  
      ENDIF 
      IF(LCHECK(26).AND.(LPAUSE(ICL1).OR.LPAUSE(ICL2))) THEN
C PAUSE statement   
         IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II=NST,  
     +   NFI)   
         WRITE(MZUNIT,810)  
         NFAULT = NFAULT + 1
      ENDIF 
C check for statement labels beginning in column 1  
      IF(LCHECK(27)) THEN   
         IF(LLE(SIMA(NST)(1:1),'9').AND.LGE(SIMA(NST)(1:1),'0')) THEN   
            IF(.NOT.USFULL)WRITE(MZUNIT,850)(II+ISGLOB,SIMA(II),II=NST, 
     +      NFI)
            WRITE(MZUNIT,530)   
            NFAULT = NFAULT + 1 
         ENDIF  
      ENDIF 
      IF(LCHECK(28).AND.(LSTOP(ICL1).OR.LSTOP(ICL2))) THEN  
C STOP statement
         IF(.NOT.LWRITE(ICLOLD)) THEN   
            IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II
     +      =NST, NFI)  
            WRITE(MZUNIT,820)   
            NFAULT = NFAULT + 1 
         ENDIF  
      ENDIF 
C Check for ENTRY in FUNCTION   
      IF(LCHECK(29).AND.LENTRY(ICL1).AND.IFUNC.EQ.1) THEN   
         IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II=NST,  
     +   NFI)   
         WRITE(MZUNIT,830)  
         NFAULT = NFAULT + 1
      ENDIF 
C Check for I/O in FUNCTION 
      IF(LCHECK(30).AND.IFUNC.EQ.1) THEN
         IF(LIO(ICL1)) THEN 
            IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II
     +      =NST,NFI)   
            WRITE(MZUNIT,780)   
            NFAULT = NFAULT + 1 
         ENDIF  
         IF(LIO(ICL2)) THEN 
            IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA(II),II
     +      =NST,NFI)   
            WRITE(MZUNIT,780)   
            NFAULT = NFAULT + 1 
         ENDIF  
      ENDIF 
C check for alternate RETURN
      IF(LCHECK(31).AND.(LRETRN(ICL1).OR.LRETRN(ICL2))) THEN
         IPOSR=INDEX(SSTA(:NCHST),'RETURN') 
         IF(IPOSR.NE.0.AND.IPOSR+5.NE.NCHST) THEN   
            IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB, SIMA(II),II   
     +      =NST, NFI)  
            WRITE(MZUNIT,540)   
            NFAULT = NFAULT + 1 
         ENDIF  
      ENDIF 
C Check for COMMON block title clash with variable name 
      IF(.NOT.LCOMMN(ICL1).AND..NOT.LSAVE(ICL1)) THEN   
         DO 280 IS=1,NSNAME 
            ILEN = INDEX(SNAMES(IS+ISNAME),' ')-1   
            DO 250 ICT=1,NCOMT  
               ILEN2 = INDEX(SCTITL(ICT),' ')-1 
               IF(ILEN2.NE.ILEN)                                GOTO 250
               IF(LCHECK(32)) THEN  
                  IF(SNAMES(IS+ISNAME).EQ.SCTITL(ICT)) THEN 
                     IF(.NOT.USFULL) WRITE(MZUNIT,850) (II+ISGLOB,SIMA  
     +               (II),II =NST,NFI)  
                     WRITE(MZUNIT,840) SCTITL(ICT),SCTITL(ICT)  
                     NFAULT = NFAULT + 1
                                                                GOTO 260
                  ENDIF 
               ENDIF
  250       CONTINUE
  260       CONTINUE
C Mark COMMON block variables as used   
            DO 270 ICN=1,NCOMN  
               ILEN2 = INDEX(SCNAME(ICN),' ')-1 
               IF(ILEN2.NE.ILEN)                                GOTO 270
               IF(SCNAME(ICN).EQ.SNAMES(IS+ISNAME)) THEN
                  ICM = ICNAME(ICN) 
                  ICTITL(ICM) = -IABS(ICTITL(ICM))  
               ENDIF
  270       CONTINUE
  280    CONTINUE   
      ENDIF 
C Make ICLOLD last executable statement 
      IF(ISTMDS(11,ICL1).EQ.1) THEN 
         ICLOLD = ICL2  
         IF(ICL1.NE.IIF) ICLOLD = ICL1  
      ENDIF 
C   
  500 FORMAT(/,1X,'!!! WARNING ... INPUT FORTRAN SHOULD BEGIN', 
     +' WITH MODULE DECLARATION EG "PROGRAM  ... "')
  510 FORMAT((1X,I6,'. ',A80))  
  520 FORMAT(1X,'!!! WARNING ... USE STANDARD FORTRAN TYPES')   
  530 FORMAT(1X,'!!! STATEMENT HAS LABEL BEGINNING IN COLUMN 1')
  540 FORMAT(1X,'!!! STATEMENT USES THE ALTERNATE RETURN FACILITY') 
  550 FORMAT(/,1X,20('+'), ' BEGIN MODULE CHECKS          ',10('+'), /, 
     +21X,' FOR ',A80,(/,1X,A80))   
  560 FORMAT(1X,'!!! WARNING ... AVOID COMMENT LINES',  
     +' BEFORE MODULE DECLARATION') 
  570 FORMAT(1X,'!!! WARNING ... MODULE ',A,
     +' CLASHES WITH INTRINSIC FUNCTION ',A)
  580 FORMAT(1X,'!!! WARNING ... NOT ENOUGH (<3) COMMENT',  
     +' LINES AT START OF MODULE')  
  590 FORMAT(1X,'!!! COMMENT DOES NOT START WITH "C"')  
  600 FORMAT(1X,'    IT SHOULD BE A HISTORIAN "CALL" ANYWAY')   
  610 FORMAT(1X,'!!! STATEMENT HAS COMMENT PLACED BEFORE CONTINUATION') 
  620 FORMAT(1X,'!!! STATEMENT CONTAINS >1 COMMON DEFINITION')  
  630 FORMAT(1X,'!!! NON-FATAL ERROR IN USSBEG . MCOMT EXCEEDED')   
  640 FORMAT(1X,'!!! NON-FATAL ERROR IN USSBEG . MCOMN EXCEEDED')   
  650 FORMAT(1X,'!!! STATEMENT DIMENSIONS ',A,' OUTSIDE COMMON')
  660 FORMAT(1X,'!!! NAME ',A,' HAS EMBEDDED BLANKS AT SOURCE') 
  670 FORMAT(1X,'!!! THE KEYWORD ',A,' CONTAINS BLANKS')
  680 FORMAT(1X,'!!! STATEMENT HAS NO BLANK AFTER KEYWORD ',A25)
  690 FORMAT(1X,'!!! KEYWORD "ELSE IF" CONTAINS MISPLACED BLANKS')  
  700 FORMAT(1X,'!!! STATEMENT HAS NO BLANK AFTER "ELSEIF"')
  710 FORMAT(1X,'!!! KEYWORD "GO TO" CONTAINS MISPLACED BLANKS')
  720 FORMAT(1X,'!!! STATEMENT HAS NO BLANK AFTER "GO TO"') 
  730 FORMAT(1X,'!!! STATEMENT HAS NO BLANK AFTER "GOTO"')  
  740 FORMAT(1X,'!!! STATEMENT HAS NO BLANK AFTER "GOTO"')  
  750 FORMAT(1X,'!!! STATEMENT HAS NO BLANK AFTER "GO TO"') 
  760 FORMAT(1X,'!!! STATEMENT CONTAINS EMBEDDED BLANKS IN "GO TO"')
  770 FORMAT(1X,'!!! STATEMENT SHOULD BE A WRITE STATEMENT')
  780 FORMAT(1X,'!!! I/O IN FUNCTIONS DISALLOWED')  
  790 FORMAT(1X,'!!! STATEMENT SHOULD NOT HAVE LABEL')  
  800 FORMAT(1X,'!!! STATEMENT SHOULD NOT HAVE LUN=*')  
  810 FORMAT(1X,'!!! PAUSE STATEMENTS ARE FROWNED UPON')
  820 FORMAT(1X,'!!! STATEMENT SHOULD BE PRECEDED BY A "WRITE"')
  830 FORMAT(1X,'!!! ENTRY STATEMENTS DISALLOWED IN FUNCTION')  
  840 FORMAT(1X,'!!! ',A,' CLASHES WITH COMMON BLOCK NAME ',A)  
  850 FORMAT(/,(1X,I6,'. ',A80))
      END   
